LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

ASPP

2022/2/20

SPP(Spatial Pyramid Pooling)

论文链接:https://ieeexplore.ieee.org/document/7005506


让不同的输入维度有同样的维度的输出,就是SPP所实现的。

如上图

假设输入特征图是 nn x mm x cc

第一次直接对整个图池化,得到就是 11 x 11 x cc

第二次将图像分成4份,对每一份都池化,得到的就是4个11 x 11 x cc

第二次将图像分成16份,对每一份都池化,得到的就是16个11 x 11 x cc

然后将21个11 x 11 x cc拼接,就有2121 x 11 x cc

输出结果完全和输入的mmnn无关。


Atrous Convolution(空洞卷积)

空洞卷积其实就是卷积计算时“镂空”,类似这样子:

上图是采样率(dilation rate)为2的空洞卷积,其实也就是间隔。正常卷积其实就是采样率为1的空洞卷积。

在神经网络中,为了增加感受野且降低计算量,我们总会进行下采样,

但是这样虽然可以增加感受野,但空间分辨率降低了。

空洞卷积可以尽量不丢失分辨率的情况下仍然扩大感受野。

假设一张图片88 x 88,经过一个33 x 33的卷积,再过一个pooling,结果是33 x 33

假设一张图片88 x 88,经过一个55 x 55的空洞卷积,结果是44 x 44

而且常常空洞卷积会伴随着padding,所以输出分辨率也会保留更高。

所以空洞卷积相对于普通卷积再过池化,结果分辨率更高,扩大感受野

空洞卷积还有一个好处就是可以通过设置不同的采样率,捕获多尺度信息


但是空洞卷积也有缺点。也就是gridding(网格效应/棋盘)问题。

因为很明显空洞卷积每一个提取出来的特征,其实在原图像都是不连续的。

它会导致局部信息丢失以及获取的远距离信息缺乏相关性


有一个较好的解决方法,叫做HDC(Hybrid Dilated Convolution)。

论文链接:https://ieeexplore.ieee.org/document/8354267

其实也很好理解,原来的卷积区域相当于是一个格子往八个方向各走dilation_rate格。

现在相当于先走一格,相当于普通卷积。(dilation_rate=1)

然后对这个普通卷积的区域,也就是这九个格往八个方向各走两格。

因为有9个格子,所以就有重复,没有空缺。(dilation_rate=2)

然后对这四十九个格往八个方向各走三格。(dilation_rate=3)

这样子卷积后的结果既有连续信息,也有跨越的信息。

参考:https://zhuanlan.zhihu.com/p/50369448


ASPP(Atrous Spatial Pyramid Pooling)

Deeplab v2论文链接:https://arxiv.org/abs/1706.05587

ASPP是在SPP的基础上,用Atrous Convolution(空洞卷积),增加了感受野。

主要就是用了普通空洞卷积,没有用到HDC。

对一特征图用不同dilation_rate的空洞卷积,然后拼接到一起。

控制padding保证输出特征图维度不变,例如:

nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=6, dilation=6)

参考:https://blog.csdn.net/m0_37798080/article/details/103163397